import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;

public class Shiro01 {
    public static void main(String[] args) {
        //1、读取配置
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro01.ini");

        //2、获取安全管理器:所有用户都在这里被管理
        SecurityManager securityManager = factory.getInstance();

        //3、设置安全管理器
        SecurityUtils.setSecurityManager(securityManager);

        //4、获取主题Subject 相当于当前登录用户
        Subject subject = SecurityUtils.getSubject();

        //5、获取session会话
        Session session = subject.getSession();


        session.setAttribute("userName","张三");

        System.out.println("用户名:"+session.getAttribute("userName"));

        if(!subject.isAuthenticated()){ //身份验证 也就是是否登录
            UsernamePasswordToken token = new UsernamePasswordToken("lisi","123456");
            token.setRememberMe(true);

            subject.login(token);//用户名密码放入进行登录操作
        }

        System.out.println("登录用户:"+subject.getPrincipal());

        if(subject.hasRole("admin")){ //是否是管理员
            System.out.println("是否是管理员--->"+subject.getPrincipal()+":是管理员");
        }else{
            System.out.println("是否是管理员--->"+subject.getPrincipal()+":不是管理员");
        }

        if(subject.isPermitted("goodsCar:del")){ //是否可以删除购物车商品
            System.out.println("是否可以删除购物车商品---->"+subject.getPrincipal()+":可以");
        }else{
            System.out.println("是否可以删除购物车商品---->"+subject.getPrincipal()+":不可以");
        }

        subject.logout();//退出



    }
}
